﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Sesi.Dados.Entidades;
using Sesi.Dados.Enumeradores;
using Sesi.Servico;

namespace Sesi.Telas
{
    public partial class CadastroParticipantes : Form
    {
        private Participante _participante;
        private IList<Palestras> _listaAbertura;
        private IList<Palestras> _listaEncerramento;
        private IList<Palestras> _listaMesa01;
        private IList<Palestras> _listaMesa02;
        private IList<Palestras> _listaSalaTematica;

        public CadastroParticipantes()
        {
            InitializeComponent();

            if (ListarParticipantes._isUpdate)
            {
                CaregarDados();
                CarregarListasEventos();
                AjustarListasEventos();
            }
            else
            {
                CarregarListasEventos();
            }
        }

        private void AjustarListasEventos()
        {
            int contador = 0;

            if (ListarParticipantes.ParticipanteSelecionado.ConfAbertura != null)
            {
                foreach (Palestras palestra in _listaAbertura)
                {
                    if (ListarParticipantes.ParticipanteSelecionado.ConfAbertura.PalestraId == palestra.PalestraId)
                    {
                        cbConfAbertura.SelectedIndex = contador;
                        break;
                    }
                    contador++;
                }
            }

            contador = 0;

            if (ListarParticipantes.ParticipanteSelecionado.ConfEncerramento != null)
            {
                foreach (Palestras palestra in _listaEncerramento)
                {
                    if (ListarParticipantes.ParticipanteSelecionado.ConfEncerramento.PalestraId == palestra.PalestraId)
                    {
                        cbConfEncerramento.SelectedIndex = contador;
                        break;
                    }
                    contador++;
                }
            }

            contador = 0;

            if (ListarParticipantes.ParticipanteSelecionado.MesaRedonda1 != null)
            {
                foreach (Palestras palestra in _listaMesa01)
                {
                    if (ListarParticipantes.ParticipanteSelecionado.MesaRedonda1.PalestraId == palestra.PalestraId)
                    {
                        cbMesaRed1.SelectedIndex = contador;
                        break;
                    }
                    contador++;
                }
            }

            contador = 0;

            if (ListarParticipantes.ParticipanteSelecionado.MesaRedonda2 != null)
            {
                foreach (Palestras palestra in _listaMesa02)
                {
                    if (ListarParticipantes.ParticipanteSelecionado.MesaRedonda2.PalestraId == palestra.PalestraId)
                    {
                        cbMesaRed2.SelectedIndex = contador;
                        break;
                    }
                    contador++;
                }
            }

            contador = 0;

            if (ListarParticipantes.ParticipanteSelecionado.SalaTematica != null)
            {
                foreach (Palestras palestra in _listaSalaTematica)
                {
                    if (ListarParticipantes.ParticipanteSelecionado.SalaTematica.PalestraId == palestra.PalestraId)
                    {
                        cbSalaTematica.SelectedIndex = contador;
                        break;
                    }
                    contador++;
                }
            }           
        }


        private void CaregarDados()
        {
            txtTelefone.Text = ListarParticipantes.ParticipanteSelecionado.Telefone;
            txtRg.Text = ListarParticipantes.ParticipanteSelecionado.Rg;
            txtNome.Text = ListarParticipantes.ParticipanteSelecionado.Nome;
            txtINstituicao.Text = ListarParticipantes.ParticipanteSelecionado.Instituicao;
            txtEndereco.Text = ListarParticipantes.ParticipanteSelecionado.Endereco;
            txtEmail.Text = ListarParticipantes.ParticipanteSelecionado.Email;
            txtCpf.Text = ListarParticipantes.ParticipanteSelecionado.Cpf;
            txtCelular.Text = ListarParticipantes.ParticipanteSelecionado.Celular;
        }

        private void CarregarListasEventos()
        {
            _listaAbertura = Fachada.GetInstancia().ObterTodasPalestrasPorTipo(TipoPalestra.CONFERENCIADEABERTURA);
            _listaAbertura.Insert(0, new Palestras());

            _listaEncerramento = Fachada.GetInstancia().ObterTodasPalestrasPorTipo(TipoPalestra.CONFERENCIADEENCERRAMENTO);
            _listaEncerramento.Insert(0, new Palestras());

            _listaMesa01 = Fachada.GetInstancia().ObterTodasPalestrasPorTipo(TipoPalestra.MESAREDONDA);
            _listaMesa01.Insert(0, new Palestras());

            _listaMesa02 = Fachada.GetInstancia().ObterTodasPalestrasPorTipo(TipoPalestra.MESAREDONDA);
            _listaMesa02.Insert(0, new Palestras());

            _listaSalaTematica = Fachada.GetInstancia().ObterTodasPalestrasPorTipo(TipoPalestra.SALATEMATICA);
            _listaSalaTematica.Insert(0, new Palestras());

            CarregarComboBox();
        }

        private void CarregarComboBox()
        {
            cbConfAbertura.DataSource = _listaAbertura;
            cbConfAbertura.ValueMember = "Tema";
            cbConfEncerramento.DataSource = _listaEncerramento;
            cbConfEncerramento.ValueMember = "Tema";
            cbMesaRed1.DataSource = _listaMesa01;
            cbMesaRed1.ValueMember = "Tema";
            cbMesaRed2.DataSource = _listaMesa02;
            cbMesaRed2.ValueMember = "Tema";
            cbSalaTematica.DataSource = _listaSalaTematica;
            cbSalaTematica.ValueMember = "Tema";
            
        }

        private void Form1_Load(object sender, EventArgs e)
        {
           
        }

        private void MontarParticipantes()
        {
            _participante = new Participante();

            if (ListarParticipantes._isUpdate)
            {
                _participante.ParticipantesId = ListarParticipantes.ParticipanteSelecionado.ParticipantesId;
            }

            _participante.Nome = txtNome.Text;
            _participante.Cpf = txtCpf.Text;
            _participante.Email = txtEmail.Text;
            _participante.Endereco = txtEndereco.Text;
            _participante.Instituicao = txtINstituicao.Text;
            _participante.Rg = txtRg.Text;
            _participante.Telefone = txtTelefone.Text;
            _participante.Celular = txtCelular.Text;

            if (cbConfAbertura.SelectedIndex > 0)
                _participante.ConfAbertura = _listaAbertura[cbConfAbertura.SelectedIndex];
            if (cbConfEncerramento.SelectedIndex > 0)
                _participante.ConfEncerramento = _listaEncerramento[cbConfEncerramento.SelectedIndex];
            if (cbMesaRed1.SelectedIndex > 0)
                _participante.MesaRedonda1 = _listaMesa01[cbMesaRed1.SelectedIndex];
            if (cbMesaRed2.SelectedIndex > 0)
                _participante.MesaRedonda2 = _listaMesa02[cbMesaRed2.SelectedIndex];
            if (cbSalaTematica.SelectedIndex > 0)
                _participante.SalaTematica = _listaSalaTematica[cbSalaTematica.SelectedIndex];
        }

        private void Salvar()
        {
            MontarParticipantes();

            bool tudoCerto = false;

            if (ListarParticipantes._isUpdate)
            {
                Fachada.GetInstancia().Atualizar(_participante, ref tudoCerto);
                if (tudoCerto)
                {
                    if (
                        MessageBox.Show("Participante Atualizado com Sucesso!", "Confirmação", MessageBoxButtons.OK,
                                        MessageBoxIcon.Information) == DialogResult.OK)
                    {
                        Close();
                    }
                }
            }
            else
            {
                Fachada.GetInstancia().Inserir(_participante, ref tudoCerto);
                if (tudoCerto)
                {
                    if (
                        MessageBox.Show("Participante Inserido com Sucesso!", "Confirmação", MessageBoxButtons.OK,
                                        MessageBoxIcon.Information) == DialogResult.OK)
                    {
                        Close();
                    }
                }
            }
        }

        private void button4_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void button1_Click(object sender, EventArgs e)
        {
           
            Salvar();
        }

        private void CarregarDadosConfAbertura()
        {
            lblDataAbertura.Text = _listaAbertura[cbConfAbertura.SelectedIndex].DataPalestra.ToShortDateString();
            lblDetalhesAbertura.Text = _listaAbertura[cbConfAbertura.SelectedIndex].Detalhes;
            lblHorarioAbertura.Text = _listaAbertura[cbConfAbertura.SelectedIndex].HorarioInicio + "-" +
                                          _listaAbertura[cbConfAbertura.SelectedIndex].HorarioTermino;
            if (_listaAbertura[cbConfAbertura.SelectedIndex].PalestraId != 0)
            {
                lblCadastroAbertura.Text = 
                    Fachada.GetInstancia().ParticipantesPorConfAbertura(_listaAbertura[cbConfAbertura.SelectedIndex]).ToString()
                    + " de " + _listaAbertura[cbConfAbertura.SelectedIndex].QuantidadeVagas.ToString();
            }
            else
            {
                lblCadastroAbertura.Text = "0"
                    + " de " + _listaAbertura[cbConfAbertura.SelectedIndex].QuantidadeVagas.ToString();
            }
            
           
        }

        private void CarregarDadosConfEncerramento()
        {
            lblDataEncerramento.Text = _listaEncerramento[cbConfEncerramento.SelectedIndex].DataPalestra.ToShortDateString();
            lblDetalhesEncerramento.Text = _listaEncerramento[cbConfEncerramento.SelectedIndex].Detalhes;
            lblHorarioEncerramento.Text = _listaEncerramento[cbConfEncerramento.SelectedIndex].HorarioInicio + "-" +
                                          _listaEncerramento[cbConfEncerramento.SelectedIndex].HorarioTermino;

            if (_listaEncerramento[cbConfEncerramento.SelectedIndex].PalestraId != 0)
            {
                lblCadastradorEncerramento.Text = Fachada.GetInstancia().ParticipantesPorConfEncerramento(_listaEncerramento[cbConfEncerramento.SelectedIndex]).ToString()
                    + " de " + _listaEncerramento[cbConfEncerramento.SelectedIndex].QuantidadeVagas.ToString();
            }
            else
            {
                lblCadastradorEncerramento.Text = "0"
                    + " de " + _listaEncerramento[cbConfEncerramento.SelectedIndex].QuantidadeVagas.ToString();
            }
            
        }

        private void CarregarDadosMesa01()
        {
            lblDataMesa01.Text = _listaMesa01[cbMesaRed1.SelectedIndex].DataPalestra.ToShortDateString();
            lblDetalhesMesa01.Text = _listaMesa01[cbMesaRed1.SelectedIndex].Detalhes;
            lblHorarioMesa01.Text = _listaMesa01[cbMesaRed1.SelectedIndex].HorarioInicio + "-" +
                                          _listaMesa01[cbMesaRed1.SelectedIndex].HorarioTermino;
            if (_listaMesa01[cbMesaRed1.SelectedIndex].PalestraId != 0)
            {
                lblCadastroMesa01.Text = Fachada.GetInstancia().ParticipantesPorMesaRedonda(_listaMesa01[cbMesaRed1.SelectedIndex]).ToString()
                    + " de " + _listaMesa01[cbMesaRed1.SelectedIndex].QuantidadeVagas.ToString();
            }
            else
            {
                lblCadastroMesa01.Text = "0"
                    + " de " + _listaMesa01[cbMesaRed1.SelectedIndex].QuantidadeVagas.ToString();
            }
            
        }

        private void CarregarDadosMesa02()
        {
            lblDataMesa02.Text = _listaMesa02[cbMesaRed2.SelectedIndex].DataPalestra.ToShortDateString();
            lblDetalhesMesa02.Text = _listaMesa02[cbMesaRed2.SelectedIndex].Detalhes;
            lblHorarioMesa02.Text = _listaMesa02[cbMesaRed2.SelectedIndex].HorarioInicio + "-" +
                                          _listaMesa02[cbMesaRed2.SelectedIndex].HorarioTermino;

            if (_listaMesa02[cbMesaRed2.SelectedIndex].PalestraId != 0)
            {
                lblCadastroMesa02.Text = Fachada.GetInstancia().ParticipantesPorMesaRedonda(_listaMesa02[cbMesaRed2.SelectedIndex]).ToString()
                    + " de " + _listaMesa02[cbMesaRed2.SelectedIndex].QuantidadeVagas.ToString();
            }
            else
            {
                lblCadastroMesa02.Text = "0"
                    + " de " + _listaMesa02[cbMesaRed2.SelectedIndex].QuantidadeVagas.ToString();
                    
            }
            
        }

        private void CarregarDadosSalaTematica()
        {
            lblDataTematica.Text = _listaSalaTematica[cbSalaTematica.SelectedIndex].DataPalestra.ToShortDateString();
            lblDetalhesTematica.Text = _listaSalaTematica[cbSalaTematica.SelectedIndex].Detalhes;
            lblHorarioTematica.Text = _listaSalaTematica[cbSalaTematica.SelectedIndex].HorarioInicio + "-" +
                                          _listaSalaTematica[cbSalaTematica.SelectedIndex].HorarioTermino;

            if (_listaSalaTematica[cbSalaTematica.SelectedIndex].PalestraId != 0)
            {
                lblCadastroTematica.Text = Fachada.GetInstancia().ParticipantesPorSalaTematica(_listaSalaTematica[cbSalaTematica.SelectedIndex]).ToString()
                    + " de " + _listaSalaTematica[cbSalaTematica.SelectedIndex].QuantidadeVagas.ToString();
            }
            else
            {
                lblCadastroTematica.Text = "0"
                    + " de " + _listaSalaTematica[cbSalaTematica.SelectedIndex].QuantidadeVagas.ToString();
            }
            
        }

        private void cbConfAbertura_SelectedIndexChanged(object sender, EventArgs e)
        {
            CarregarDadosConfAbertura();
        }

        private void cbConfEncerramento_SelectedIndexChanged(object sender, EventArgs e)
        {
            CarregarDadosConfEncerramento();
        }

        private void cbMesaRed1_SelectedIndexChanged(object sender, EventArgs e)
        {
            CarregarDadosMesa01();
        }

        private void cbMesaRed2_SelectedIndexChanged(object sender, EventArgs e)
        {
            CarregarDadosMesa02();
        }

        private void cbSalaTematica_SelectedIndexChanged(object sender, EventArgs e)
        {
            CarregarDadosSalaTematica();
        }
    }
}

